package com.zlb.app.utils;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.zlb.app.common.exception.BusinessException;

import java.util.List;
import java.util.Map;

/**
 * @Description 工具类
 * @Author zWX1367238
 * @Since 2024-08-14 15:21:15
 */
public class Assert {

    /**
     * 判断对象是否为空,如果为空抛出执行信息异常
     *
     * @param obj 需判断对象
     * @param msg 对象为空时异常信息
     */
    public static void isNull(Object obj, String msg) {
        Boolean bool = false;
        if (obj instanceof String && (StrUtil.isEmpty((String) obj) || StrUtil.isBlank((String) obj))) {
            bool = true;
        } else if (obj instanceof List && CollUtil.isEmpty((List) obj)) {
            bool = true;
        } else if (obj instanceof Map && CollUtil.isEmpty((Map) obj)) {
            bool = true;
        }
        if (ObjectUtil.isEmpty(obj)) {
            bool = true;
        }
        if (bool) {
            throw new BusinessException(msg);
        }
    }

    /**
     * 方法重载:多个对象判空,只要有一个为空就抛出异常
     * @param msg 异常信息
     * @param obj 对象数组
     */
    public static void isNull(String msg, Object... obj) {
        if (obj.length == 0) {
            return;
        }
        for (Object o : obj) {
            isNull(o, msg);
        }
    }

    /**
     * 如果表达式不为true就抛出异常
     * @param bool 逻辑表达式
     * @param msg 异常信息
     */
    public static void notTrue(boolean bool, String msg) {
        if (!bool) {
            throw new BusinessException(msg);
        }
    }

    /**
     * 如果表达式为true就抛出异常
     * @param bool 逻辑表达式
     * @param msg 异常信息
     */
    public static void isTrue(boolean bool, String msg) {
        if (bool) {
            throw new BusinessException(msg);
        }
    }

}
